﻿using Glorysoft.EAP.Core.Enums;
using System.Collections.Generic;

namespace Glorysoft.EAP.Core.Entities
{
    public class LotInfo
    {
        public string LotId { get; set; } //批次号
        public string LotType { get; set; } //批次类型
        public ProcessState RunStatus { get; set; }//批次运行状态
        public string LotStatus { get; set; }//批次状态
        public string Qty { get; set; }//批次总数
        public string CarrierId { get; set; }//Carrier,Tray,Magazine,C-Sam夹具，托盘1托盘2等
        public string ProcessId { get; set; } //流程号
        public string ProductId { get; set; } //产品号
        public string ProductVer { get; set; } //产品号
        public string StepId { get; set; } //当前站别
        public string NextStepId { get; set; } //下一站
        public string RecipeId { get; set; }  //跑货Recipe
        public List<UnitRecipeInfo> UnitRecipes { get; set; } = new List<UnitRecipeInfo>();  //子Recipe
        public string RecipeBody { get; set; }
        public Dictionary<string, string> RecipeParameters { get; set; } = new Dictionary<string, string>();//RecipeBody参数列表
        public string PPID { get; set; }
        public byte[] PPBody { get; set; }  //RecipeBody字节数组
        public int PPLength { get; set; }
        public string SlotMap { get; set; }
        public List<CarrierInfo> Carreirs { get; set; } = new List<CarrierInfo>();

        public List<CARRIERLIST> CARRIERLIST { get; set; } = new List<CARRIERLIST>();
        public List<ITEMLIST> ITEMLIST { get; set; } = new List<ITEMLIST>();
        public CarrierInfo CurrentCarreir { get; set; } = new CarrierInfo();
        //  
        public string TesterRecipeId { get; set; }  //测试机RecipeId
        public string TesterRecipePath { get; set; }  //测试机Recipepath
        public string StartTime { get; set; }//生产开始时间
        public string EndTime { get; set; }//生产结束时间
        public string TrackInTime { get; set; }//进站时间
        public string TrackOutTime { get; set; }//出站时间
        public bool IsPodPlaced { get; set; } = false;//实物放在设备上面，通知客户端显示Cassette

        public List<LOSSINFOLIST> LOSSINFOLIST = new List<LOSSINFOLIST>();//不良品代码和描述

        public List<UNITLIST> UNITLIST = new List<UNITLIST>();//不良品SN
        #region 暂时未使用
        public string RemoteCommand { get; set; }
        public string BatchId { get; set; }
        public string JobId { get; set; }
        public string WaferId { get; set; }
        public List<string> ParameterList { get; set; }
        public string QueryType { get; set; }
        public List<int> IdList { get; set; } = new List<int>();
        public string ScenarioName { get; set; }
        public string StepNext { get; set; } = "Execute";
        public object MessageTag { get; set; }
        #endregion
    }
    public class CarrierInfo
    {
        public List<UnitInfo> Units { get; set; } = new List<UnitInfo>();//Wafer列表
        public string CarrierId { get; set; }
        public string CarrierStatus { get; set; }
        public string UnitQty { get; set; }
    }
    public class UnitInfo
    {
        public string UnitId { get; set; }//waferid
        public string Position { get; set; } //wafer slot 位置
        public string UnitStatus { get; set; } //wafer状态 FINISH/IDLE/PROCESSING
        public string ItemId { get; set; }//实物ID
        public string RecipeId { get; set; }//如果是slotRecipe 直接取这个给每一片赋不同的recipe
        public string MarkCode { get; set; }  /// 打标内容
        public string UnitColor { get; set; }//  实物颜色
    }
    public class UNITLIST
    {
        public string UNITID { get; set; }

    }
    public class UnitRecipeInfo
    {
        public string UnitRecipeId { get; set; }//子recipeId
        public string ChemberType { get; set; } //wafer slot 位置
    }

    public class CARRIERLIST
    {
        public string CARRIERNAME { get; set; }
    }
    public class ITEMLIST
    {
        public string ITEMNAME { get; set; }
        public List<SITELIST> SITELIST { get; set; }
    }
    public class SITELIST
    {
        public string SITENAME { get; set; }
        public string SITEVALUE { get; set; }
    }
    public class LOSSINFOLIST
    {
        public string LOSSCODE { get; set; }
        public string LOSSDESC { get; set; }

        public string LOSSCOUNT { get; set; }

        public List<PIDLIST> PIDLIST { get; set; }
    }
    public class PIDLIST
    {
        public string PIDNAME { get; set; }
    }
  

}
